package edu.gatech.oad.antlab.person;

import java.util.Random;

/**
 * A simple class for person 2 returns their name and a modified string
 * 
 * @author Bob
 * @version 1.1
 */
public class Person2 {
	/** Holds the persons real name */
	private String name;

	/**
	 * The constructor, takes in the persons name
	 * 
	 * @param pname
	 *            the person's real name
	 */
	public Person2(String pname) {
		name = pname;
	}

	/**
	 * This method should take the string input and return its characters in
	 * random order. given "gtg123b" it should return something like "g3tb1g2".
	 * 
	 * @param input
	 *            the string to be modified
	 * @return the modified string
	 */
	private String calc(String input) {
		Random gen = new Random();
		int ran;
		String nString = "";
		int len = input.length();
		int pLen = input.length();
		for (int i = 0; i < pLen; i++) {
			ran = gen.nextInt(len);
			nString += input.charAt(ran);
			input = removeCharAt(input, ran);
			len--;
		}
		return nString;
	}

	/**
	 * This method removes a character in the given string at the given index
	 * 
	 * @param s
	 *            string has to be modified
	 * @param pos
	 *            index to be deleted
	 * @return modified string
	 */
	private String removeCharAt(String s, int pos) {
		StringBuffer buf = new StringBuffer(s.length() - 1);
		buf.append(s.substring(0, pos)).append(s.substring(pos + 1));
		return buf.toString();
	}

	/**
	 * Return a string rep of this object that varies with an input string
	 * 
	 * @param input
	 *            the varying string
	 * @return the string representing the object
	 */
	public String toString(String input) {
		return name + calc(input);
	}
}
